今天來講講剛在學習PHP時就要先有的common sense
,
OOP物件導向的基礎介紹與操作,包含認識類別與物件的操作,
讓不熟悉類別的人可以了解物件導向的好處,並且了解物件與類別的特性與關係。
“Object-oriented programming is a style of coding that allows developers to group similar tasks into classes.”
物件導向是一種寫程式的方式,它傾向讓開發者把有類似或有關聯的部分抽出來進而重整到類別裡面,
這讓程式保持遵守不重複原則don’t repeat yourself
(DRY),對往後程式的維護也更加容易。
首先,先來了解物件(object)與類別(class)的功能與用途。
為了要蓋好一棟建築物有了建築物的藍圖還不夠,還需要蓋房子的材料而材料就是所謂的資料(data)。如果沒有按照設計藍圖(類別class)來蓋,這些只會是一堆的材料(資料data)就是個豆腐渣工程。要按程序施工作業才能打造出一棟令人住的安心讓使用者用的放心的建築物。
類別定義結構和行為用來產生物件,當多個物件是由同一個類別產生出來時,每個物件都是一個獨立個體。
建立類別的語法很簡單,使用
class
來定義一個類別,然後在類別名稱後面再加上大括號{}
。
建立一個新的檔案test.php
,建立一個類別名為MyClass
<?php
class MyClass
{
// 在大括號裡面宣告類別的屬性與方法。
}
$obj = new MyClass; //使用`new`來實例化類別並且將它存到變數裡。
var_dump($obj); //查看類別的內容。
輸出到畫面會顯示
object(MyClass)#1 (0) { }
使用屬性(Property),也稱作類別的變數(Variable)來把資料(Data)存入類別裡面。
存取的用法就像普通變數一樣,除非這些變數被物件給綁定了,被綁定的變數只能由物件本身存取。
接下來替MyClass
加入屬性(Property),用public
決定屬性(Property)的可視性(Visibility),
來定義屬性的名稱(Variable)和值(Value)。
<?php
class MyClass
{
public $prop1 = "I'm a class property!";
}
$obj = new MyClass;
echo $obj->prop1; //指定要讀取的物件及屬性,並將它顯示在瀏覽器上。
因為有很多物件實例化自同一個類別,如果沒有指定這些被實例化的物件,
會導致程式碼沒辦法判斷應該讀取哪個物件,所以->
在PHP的物件中,用來存取物件的屬性和方法。
輸出到畫面會顯示
I'm a class property!
方法(Methods)是類別裡面的函式(Functions),物件可以藉由執行這些方法來更動每個物件的行為。
<?php
class MyClass
{
public $prop1 = "I'm a class property!";
public function setProperty($newval)
{
$this->prop1 = $newval;
}
public function getProperty()
{
return $this->prop1 . "<br />";
}
}
$obj = new MyClass;
echo $obj->getProperty(); //得到屬性的值。
$obj->setProperty("I'm a new property value!"); //設定新的屬性的值。
echo $obj->getProperty(); //讀取新設定的值。
輸出到畫面會顯示
I'm a class property!
I'm a new property value!
物件導向允許物件透過
$this
來參考自己。物件使用$this
就如同直接使用物件名稱來指定物件,同等於MyClass->prop1
。
之後會再講到更深入的物件導向,
本篇介紹到此,下次見~